package com.mioto.ld.module.product.service;

import com.mioto.ld.module.center.model.DeviceSaleAreaVO;
import com.mioto.ld.module.center.model.DeviceStatusVO;
import com.mioto.ld.module.center.model.ProductSaleRankVO;
import com.mioto.ld.module.center.model.ProductSaleTrendVO;
import com.mioto.ld.module.product.model.*;

import java.util.Date;
import java.util.List;

/**
 * IProductService
 *
 * @author mioto
 * @date 2024-05-14 21:05:44
 */
public interface IProductService{

    /**
     * 根据条件查询列表
     * @param product
     * @return
     */
    List<Product> findList(Product product);

    /**
     * 根据列名和对应的值查询对象
     * @param column
     * @param value
     * @return
     */
    Product findByColumn(String column, Object value);

    /**
     * 新增对象
     * @param product
     * @return
     */
    int insert(ProductEditDTO product);

    /**
     * 修改对象
     * @param product
     * @return
     */
    int update(Product product);

    /**
     * 修改对象,忽略空值
     * @param product
     * @return
     */
    int updateIgnoreNull(ProductEditDTO product);

    /**
     * 删除对象
     * @param value
     * @return
     */
    int deleteById(int value);

    /**
     * 根据主键列表批量删除
     * @param ids
     * @return
     */
    int batchDelete(Integer[] ids);

    List<ProductPagerVO> findPager(Product product);

    ProductDetailVO findById(int id);

    List<ProductSaleRankVO> productSaleStatistics();

    List<ProductSaleTrendVO> saleTrendStatistics(Date startDate, Date endDate);

    List<DeviceSaleAreaVO> saleAreaStatistics();
}